package xyz.labmem.lipx.core.console.enums


import xyz.labmem.lipx.core.tool.LogInfo
import xyz.labmem.lipx.core.tool.LogInfo.Companion.logs
import xyz.labmem.lipx.core.tool.sysVersion
import xyz.labmem.lipx.labVersion

enum class Display : DisplayEnum {

    ROOT, LOGIN, LOG;

    override fun getName(): String = this.name

    /**
     * 展示内容
     */
    override fun content(): String {
        return when (this) {
            ROOT -> """
                 ██       ██ ███████  ██     ██         ██████    ███████   ████     ██  ████████   ███████   ██       ████████
                ░██      ░██░██░░░░██░░██   ██         ██░░░░██  ██░░░░░██ ░██░██   ░██ ██░░░░░░   ██░░░░░██ ░██      ░██░░░░░ 
                ░██      ░██░██   ░██ ░░██ ██         ██    ░░  ██     ░░██░██░░██  ░██░██        ██     ░░██░██      ░██      
                ░██      ░██░███████   ░░███    █████░██       ░██      ░██░██ ░░██ ░██░█████████░██      ░██░██      ░███████ 
                ░██      ░██░██░░░░     ██░██  ░░░░░ ░██       ░██      ░██░██  ░░██░██░░░░░░░░██░██      ░██░██      ░██░░░░  
                ░██      ░██░██        ██ ░░██       ░░██    ██░░██     ██ ░██   ░░████       ░██░░██     ██ ░██      ░██      
                ░████████░██░██       ██   ░░██       ░░██████  ░░███████  ░██    ░░███ ████████  ░░███████  ░████████░████████
                ░░░░░░░░ ░░ ░░       ░░     ░░         ░░░░░░    ░░░░░░░   ░░      ░░░ ░░░░░░░░    ░░░░░░░   ░░░░░░░░ ░░░░░░░░ 
                $sysVersion labVersion:$labVersion ${if (LogInfo.debug) "Debug" else ""}
            """.trimIndent()

            LOGIN -> "开发中"
            LOG -> {
                var log = ""
                logs.forEach { log += "\r $it \n" }
                "LIPX LOGS:\n $log"
            }
        }
    }

    /**
     * 操作提示
     */
    override fun hint(): String {
        return "tips: " + when (this) {
            ROOT -> "[1]服务端 [2]客户端 [3]云同步 [log]日志 [exit]退出"
            LOGIN -> "[1]本地配置 [2]导入配置 [3]登录配置 [0]返回"
            LOG -> "[back]返回"
        }
    }

    override fun keys(): List<String> {
        return when (this) {
            ROOT -> listOf("1", "2", "3", "log", "exit")
            LOGIN -> listOf("1", "2", "3", "0", "./")
            LOG -> listOf("./", "back")
        }
    }
}